Process
process란 실행 중인 프로그램을 뜻한다.
🧑🏻💻 process 종류
✅ Foreground process
- 사용자가 볼 수 있는 공간에서 실행하는 progress
✅ Background process
- 사용자가 볼 수 없는 공간에서 실행하는 progress
→ 사용자와 직접 상호작용하는 progress
→ 사용자와 상호작용하지 않는 progress (예: demon)
🧑🏻💻 process의 메모리 영역별 사용법
(1) 커널 영역에서의 process 사용법과 (2) 사용자 영역에서의 process 사용법을 나누어 생각한다.
✅ process의 커널 영역 사용법
✏️ PCB (process 제어 블록)
process는 process 관련 정보를 저장하는 자료 구조인 PCB를 활용한다.
PCB는 process 생성 시 커널 영역에 생성되었다가, process 종료 시 폐기된다.
✏️ PCB가 담고 있는 대표적인 정보
process ID (PID) 특정 process 식별 고유 번호
레지스터 값 process가 CPU를 다시 할당받을 때 필요한 작업 정보 보관 장소
process 상태 (state)
생성 상태 : PCB를 할당받은 상태
준비 상태 : 자신의 차례를 기다리는 상태
실행 상태 : CPU를 할당받아 실행 중인 상태
대기 상태 : process가 입출력장치를 사용하는 상태
종료 상태 : process가 종료된 상태CPU 스케줄링 정보 process가 언제, 어떤 순서로 CPU를 할당받을지에 대한 정보
메모리 정보 process가 어느 메모리 주소에 저장되어 있는지에 대한 정보 (페이지 테이블 정보)
사용 중인 파일과 입출력장치 정보
✅ process의 사용자 영역 사용법
사용자 영역은 코드, 데이터, 힙, 스택 등 영역으로 이루어 져있다.
✏️ 코드(텍스트) 영역
- 기계어로 이루어진 명령어를 read-only 형태로 저장하는 영역
✏️ 데이터 영역
- 프로그램이 실행되는 동안 유지할 데이터 저장 (ex. 전역 변수)
✏️ 힙 영역 (동적 할당 영역)
- 개발자가 직접 할당할 수 있는 저장공간
✏️ 스택 영역 (동적 할당 영역)
데이터가 일시적으로 저장되는 공간 (ex. 매개 변수, 지역 변수)
힙 영역과 스택 영역은 동적 할당 영역이므로, 메모리 주소가 겹칠 수 있다. 이에 따라 힙은 낮은 주소 → 높은 주소, 스택은 높은 주소 → 낮은 주소로 할당된다.
🧑🏻💻 문맥 교환 (context switch)
✅ context
- process 실행을 재개하기 위한 정보이다.
✅ context switch
context를 백업하고 복구하는 과정을 통해 여러 process가 끊임없이 빠르게 번갈아 가며 실행되는 것을 말한다.
🧑🏻💻 process 계층구조
process 계층구조는 다중 process 시스템에서, 하나의 process가 자신과 같은 구조를 가진 process를 생성함으로써 만들어지는 계층구조이다.
✅ 부모 process
새 process를 생성한 process를 의미한다.
fork 시스템 호출로 자신의 복사본을 자식 process로 생성한다. (부모 process의 자원을 상속)
✅ 자식 process
부모 process에 의해 생성된 process
exec 시스템 호출로 자신의 메모리 공간을 새로운 프로그램으로 덮어쓰며 process를 관리한다.
참고 자료
- 혼자 공부하는 컴퓨터구조 + 운영체제